import request from "@/utils/request";

const POST_BASE_URL = "/system/post";

const PostAPI = {
  /**
   * 获取职位分页列表
   *
   * @param queryParams 查询参数
   * @returns 职位分页结果
   */
  getPage(queryParams: PostPageQuery) {
    return request<any, PageResult<PostPageVO[]>>({
      url: `${POST_BASE_URL}/page`,
      method: "get",
      params: queryParams,
    });
  },

  /**
   * 获取职位表单数据
   *
   * @param id 职位ID
   * @returns 职位表单数据
   */
  getFormData(id: number) {
    return request<any, ResponseData<PostForm>>({
      url: `${POST_BASE_URL}/form/${id}`,
      method: "get",
    });
  },

  /**
   * 新增职位
   *
   * @param data 职位表单数据
   */
  create(data: PostForm) {
    return request({
      url: `${POST_BASE_URL}/create`,
      method: "post",
      data: data,
    });
  },

  /**
   * 修改职位
   *
   * @param id 职位ID
   * @param data 职位表单数据
   */
  modify(id: number, data: PostForm) {
    return request({
      url: `${POST_BASE_URL}/modify`,
      method: "put",
      data: data,
    });
  },

  /**
   * 删除职位
   *
   * @param ids 职位ID数组
   */
  deleteByIds(ids: number[]) {
    return request({
      url: `${POST_BASE_URL}/delete`,
      method: "delete",
      data: ids,
    });
  },

  /**
   * 获取职位列表
   *
   * @returns 职位列表
   */
  getList() {
    return request<any, PostVO[]>({
      url: `${POST_BASE_URL}/list`,
      method: "get",
    });
  },
};

export default PostAPI;

/**
 * 职位查询参数
 */
export interface PostPageQuery extends PageQuery {
  /**
   * 关键字(职位名称/编码)
   */
  keywords?: string;

  /**
   * 职位状态（1:启用，0:禁用）
   */
  enabled?: number;
}

/**
 * 职位分页对象
 */
export interface PostPageVO {
  /**
   * 职位ID
   */
  id: number;
  /**
   * 职位名称
   */
  postName: string;
  /**
   * 职级
   */
  postLevel: number;
  /**
   * 职位状态（1:启用，0:禁用）
   */
  enabled: number;
}

/**
 * 职位
 */
export interface PostForm {
  /**
   * 职位ID
   */
  id?: number;
  /**
   * 职位名称
   */
  postName?: string;
  /**
   * 职级
   */
  postLevel?: number;
  /** 排序 */
  sort?: number;
  /**
   * 职位状态（1-启用，0-禁用）
   */
  enabled?: number;
  /**
   * 备注
   */
  remark?: string;
}

/**
 * 职位数据项分页VO
 *
 * @description 职位数据分页对象
 */
export interface PostVO {
  /** 职位名称 */
  postName: string;

  /** 职级 */
  postLevel: number;
}
